"""嵌套函数"""""

'''定义'''
# 嵌套函数就是一个函数内部有N个函数，外边的函数叫做外函数，里边函数叫内函数

# def outer_func():
#     print('这是外函数')
#     def inner_func():
#         print('这是内函数')
#     inner_func()
# print(outer_func())

'''使用场景'''


# 1、代码的组织和封装：可以将一些公共逻辑放在内函数中，这样可以提高代码的可维护性
# 2、闭包：当内函数使用外函数的变量 并且 外函数的返回值是内函数，这样就可以形成闭包
def outer_func():
    a = 1

    def inner_func():
        nonlocal a
        a += 1
        return a
    return inner_func

print(outer_func()())
# 3、装饰器（重点）：装饰器就是特殊闭包函数